Framework
Download the framework here. The JANFU Mission Making Framework is an essential basis for mission makers to use to make missions for JANFU sessions. The framework comes packed with essential features needed for a high quality mission to make the mission making process easy and streamlined. Most of the scripting for a mission is done within the framework requiring only a few points of input from a mission maker. The framework also assumes the user has basic knowledge of the Arma 3 editor, if you have no experience with it you may want to look up some basic Arma 3 Eden editor tutorials first. Features *Notable features in the framework include, but are not limited to: *Easy to use JIP compatible gear script. *Pre-configured modules catered to JANFU's play style. *Pre-configured headless client *Dynamic AI Controller used for improved group level AI tactics, unpredictable unit deployment for replayability/negate mission maker meta, unit caching for improved performance. *Spawn area protection to defend from dreaded alt-tab misfires. *Re-JIP compatibility w/ teleport to squad leader function to respawn easily if player is Arma'd (i.e. vaulting into a wall and dying). *Auto-fireteam coloring script to properly divide squads by their correct fire team *Blue force tracking so units with GPS can see where friendly units are located on the map *Team roster script so players can check their briefing at any time to see what roles players have slotted in the mission, along with platoon hieracrhy. Getting Started The framework is an actual mission that must have almost all elements of it copied over into your mission. Out of Game: First drop the framework mission folder into your Arma 3 missions folder located in C:\Users\YourUsername\Documents\Arma 3 - Other Profiles\YourArmaProfile\missions Copy every file/folder from the framework except mission.sqm and drop it into your mission folder (which can be generated by simply saving inside the Arma 3 editor). Make sure you copy and do not cut these files/folders as you will need to open the actual framework mission in the editor. In-Game: Open the framework mission and look for the collection of modules located somewhere off to the side of the mission area. Don't worry if you get a few error messages as they are non-critical and will not appear on the server. Drag select all of the modules and game logics and hit Ctrl+C to copy them. Open your mission and then hit Ctrl+V to paste them. The modules are already pre-configured with the settings used for JANFU missions. The modules also setup DAC and headless client. Mission Concept Before committing entirely to making a mission there are a many conceptual things to consider that will impact the quality of your mission. Setting, size, goals, and balance. Setting: The obvious first part to setting is the terrain. Any terrain that you see in the editor when loading just the JANFU mods is available for you to use. Some things to consider when choosing a terrain is the usage/lack thereof of the terrain you want to use. Your mission will ultimately be more appealing if you avoid terrains that have been used heavily recently. Although, these aren't deal breakers considering the size of most of the terrains. Next in the setting is the actual area of the terrain you wish to use. Some areas of certain terrains are overused, such as Chernogorsk, Zargabad, or many other large cities. Try to choose an area that is unique to give your mission its own flavor. Lastly, the factions you want to be involved in the mission. Making a standard modern US vs random terrorists is another example of an overdone setting so you may want to think of something more unique. Maybe we're Cold War era British vs Russians or modern South Koreans in re-ignited Korean War. Its entirely up to you as the mission maker but just keep in mind some common settings. Size: A very important factor into the quality of your mission in the size of the mission. Size in terms of the number of enemies and size in terms of the actual area the mission covers. Your mission should ideally be beatable with somewhere between 25-35 players, but of course not be so easy as that amount of players breeze through. Placing down hundreds of enemies will probably have negative difficulty, and negative technical implications. Goals: Next, make sure you have an idea of what the goals in the mission will be, and make them reasonable as well. The mission may be something as simple as clear the area of enemies, but tying it in with size, if that area is too large it may take a very long time for players to complete. If the objective is to destroy caches, having to locate and destroy a large amount of them could again make the mission an unreasonable length. Balance: Lastly, balance is one of the more important, but also trickiest to nail down in a mission. Its common sense that making players fight tanks with no anti-tank weapons is unreasonable, but there is a lot of less obvious nuance to balance. It is easier to decide the composition of the enemy force and then mold the player force based on that. If you give the enemies tanks, give the players their own dedicated anti-tank unit of some kind. However, it is also important to not have a single point of failure for the players. If the players only have one vehicle to destroy tanks and no other AT weapons, if that vehicle is destroyed the players are powerless. On the flipside, giving the players too many AT weapons will make the mission too easy. Its really up to your own intuition to determine balance. Keep in mind the variation of player skill that could take a role. In TvTs the balance becomes even trickier as having a good player in an imporant role could result in a drastically different result than if a less experienced player was in that same role. Ultimately you can not realistically predict variables like player skill but avoiding things like over/underpowered assets and single points if failure is very much in the mission maker's power. Gearscript Main Article: Gearscript The JANFU Framework uses a switch case based gear script that checks for a unit's classname and gives them the gear based on that variable. The gearscript is located in customization/gear.sqf ''of the mission folder. The gearscript contains four major components: *Basic gear switch case that perscribes gear that all players in the mission should recieve (radios, maps, compass, etc). *Randomized gear arrays which are used to create a pool of uniforms, headgear, vests, or any element of a unit's gear that can be fed into the uniform case or specific classname switch cases for a randomized gear element. *Uniform switch case that gives each unit the specified uniform, or array to select a uniform from if using randomized gear. *Unit classname switch cases which define role-based gear for each player. I.e. giving the medic medical gear, giving the machine gunner a machine gun. The gearscript will most likely be the most complicated element for new mission makers but once familiar with the syntax becomes very easy and quick to use. Gearscripts are also modular so if a previous mission has gear you want to use for your mission you can easily grab the gear.sqf file and throw it into your mission. Before you make your gearscript you may want to to place the player units down ahead of time or as you make the gearscript to make testing your script easier. Player Composition ''You may want to do this portion of your mission while you make your gearscript to make testing easier. Right away if your mission is using DAC you will want to put "s1" in the Variable Name of the commanding player's unit. First, place down the units for the command element of the mission with their appropriate roles. Put down a Squad Leader or Officer unit as the platoon leader. Make sure the unit is set as "player". Edit the unit's Role Description which will be how the unit appears in the role selection lobby. In the platoon leader's Init put "Blu1Sq0 = group this; Blu1Sq0 setGroupId PltHQ";". This sets up the blue force tracking. Make sure this is only for the platoon leader and not any other member of the group. Place another squad leader for a platoon sergeant, a medic, optional platoon security, and set those units as "playable". Squad Composition Ultimately a squad composition is totally up to the mission maker, but the typical JANFU squad makeup is as follows: The specialist roles might be different for each fire team, as well as Rifleman (AT) not needing to be AT or could also be a specialist role such as a designated marksman or grenadier. The squad leader of each squad must also have his Init setup to use blueforce tracker. The squad leader of the 1'1 squad will use "Blu1Sq1 = group this; Blu1Sq1 setGroupId "1'1";". Likewise 1'2 will use "Blu1Sq2 = group this; Blu1Sq2 setGroupId "1'2";" and so on. Each member of a fireteam must also have their Init setup for the auto color script. Each member of the first fireteam (total 4 units) must have "id = this execVM "Teams.sqf";" in their Init. Each member of the second fireteam must have "id = this execVM "Teams.sqf";". Make sure you remember to put in the proper role description for each unit. Tip: If you end the role description with "@" for the group leader and then the squad callsign you can replace the "Alpha 1-1", "Alpha 1-2", etc callsigns in the lobby. Example, "1'1 Squad Leader @1'1" as a role description will make the unit callsign in the lobby "1'1" Assets/Supplies In your mission you may have vehicles, crew weapons, or additional supplies. Setup vehicle/weapon crewmen like any other squad, spawn their vehicle/weapon near them as necessary. If you think its needed put in extra supplies in your mission, either in a vehicle's gear directly or in a box that can be loaded as cargo into a vehicle. Having too many additional assets in your mission may leave your infantry units undermanned so keep in mind not too have a large amount of vehicle units if you do not intend to have a small infantry element. Enemy Composition Composition of enemy forces is quite important as they obviously need to challenge the players without being too difficult. A good ratio of AI infantry to players is 3:1. For AI vehicles comparable to players a good ratio is 2:1 or also 3:1. An example of comparable vehicles are AI BTRs vs a player M113, both vehicles can defeat each other, but the players are more than likely going to be more effective and should be able to take out multiple BTRs. Even with recommended ratios balancing a mission can be unpredictable depending on the skill of the players in certain roles, the effectiveness of player leadership, and sudden AI hyper-effectiveness. It is better to make a mission on the easier side than harder side if you're uneasy about balance as more enemies can be spawned in via Zeus if needed. It is recommended that you use pre-made enemy factions as all of these are available in Zeus and DAC will only accept pre-made factions. If you make custom enemy units but need to spawn in some extra it may be immersion breaking to spawn in different units. CBA Modules One of the easiest ways to place down AI and make them much more intelligent and reactive than vanilla is using the CBA modules. Place down a CBA module and sync it to a group leader. By default the AI group will defend/patrol/attack in the vicinity of where the module is placed. CBA modules involve Attack, Defend, and Patrol. Sync the module to a group leader and they will perform that function. Edit the modules to your liking, the default range at 25m is quite small, you may want to raise it to 50m or 100m to give the AI more unpredictability. Dynamic AI Controller (DAC) placeholder AI Tips/Tricks Put the AI on the lowest difficulty as AI on higher difficulties are not smarter but can gain pin-point accuracy or be impervious to suppression. The perfect method for garrisoned AI units is to put "this disableai "path";" in their initialization then place them in a position they should hold. This will disable AI movement but not hinder their targeting abilities so they will turn around if flanked. Remember to set them to the proper stance (stand, crouch, prone).